<?php
/**
 * Created by PhpStorm.
 * User: guokunsheng
 * Date: 2018/6/6
 * Time: 16:16
 */

namespace app\api\controller\v14;

use app\api\controller\v13\Auth2;
use app\common\cachemodel\AppConfig;
use app\common\cachemodel\AppVersion;
use app\common\lib\Util;
use app\common\model\AppChannelPackage;
use app\common\model\Slide;
use think\Env;

/**
 * @title App版本更新接口，客户端根据version_code进行是否升级的判断
 * @desc 【附带 控制星盘数据来源为 客户端本地获取或服务器获取 支付方式控制】
 * @url /api/v4/astro_update
 * @version 1.9.8
 * Class AppVersionUpdate
 * @package app\api\controller\v4
 */
class AppVersionUpdate extends Auth2
{
    /**
     * @title 获取app版本更新信息,根据app型号和版本,若开启强制更新则返回渠道包号
     * @method GET
     * @desc 是否有新版本发布 || 星盘获取方式有变化
     * @return \think\response\Json
     * @throws \Exception
     */
    public function index()
    {
        $headers = request()->header();
        $version_code = input('param.version-code');
        $channel = input('param.channel');

        $AppChannelModel = new AppChannelPackage();
        /**
         * 获取当前客户端的最新版本的更新信息
         */
        $AppVersion = (new AppVersion())->getVersionData(['type' => $headers['app-type'], 'version' => ($headers['version'] ?? '')]);

//        $default_pay_type = 2;
        $default_pay_type = 1;
        $appConfig = (new AppConfig())->configInfo('app');

        //2.8.5新增，个人中心tab是否展示“小组件”；【为空：不展示；不为空，那么展示，并且点击跳转这个url】
        $component_help_url = '';
        $host = Env::get('host.domain');
        if ('ios' === $headers['app-type'])
        {
            $component_help_url = $host . '/web/component_help/ios.html';
        } else if ('android' === $headers['app-type'])
        {
            $component_help_url = $host . '/web/component_help/android.html';
        }

        if ($AppVersion)
        {
            $array = [
                'version' => (int)$AppVersion['version'],
                'version_name' => $AppVersion['version_name'],
                'update_content' => $AppVersion['update_content'],
                'force' => (int)$AppVersion['force'],
                'is_astro_data_from_local' => (int)$AppVersion['is_astro_data_from_local'],
                'channel_link' => '',
                'is_hot_update' => config('app.is_hot_update'),
//                'pay_type_data' => '2,1,4',
                'pay_type_data' => '1,2,4',
                'coin_pay_type_data' => '1,2',
                'jd_pay_des' => '',
                'logo_type' => Util::CheckAppVersion('2.5.2') === '小' ? 1 : (int)$AppVersion['logo_type'],
                'contact_link' => 'https://webim.bytedance.com/h5/normal/75849/45b60348d5eb30ea?need_auth=2',   // v2.3.0版本 商城 新增字段 客服链接
                'is_open_ad' => (int)($AppVersion['is_open_ad'] ?? 0),
                'component_help_url' => $component_help_url,
            ];
            if (Util::CheckAppVersion('2.9.6') === '同')
            {
                $array['logo_type'] = 3;
            }
            // 获取启动页数据
            $data = (new Slide())->getStartPageVersion();
            // 检测当前版本是否有开屏页，有=>关闭广告SDK   无=>【使用后台设置的】
            if (!empty($data) && $data['id'] !== '')
            {
                $array['is_open_ad'] = 0;
            }

            switch (strtolower($headers['app-type']))
            {
                case 'ios':
//                    /**
//                     * 获取苹果支付商品
//                     */
//                    $apple_goods = config('apple_pay_goods');
//                    /**
//                     * 苹果支付开启且版本相同ios开启的支付方式
//                     */
//                    if ($headers['version'] == $apple_goods['version'])
//                    {
//                        if ($apple_goods['switch'] === 1)
//                        {
//                            $array['pay_type_data'] = '9';//其他商品，苹果支付
//                            $array['coin_pay_type_data'] = '9';//充值，苹果支付
//                        }
//                        if ($apple_goods['switch'] === 2)
//                        {
//                            $array['pay_type_data'] = '4';//其他商品，准币支付
//                            $array['coin_pay_type_data'] = '9';//充值，苹果支付
//                        }
//                    }
                    /**
                     * 获取ios支付方式
                     */
//                    $apple_pay = explode(',', $AppVersion['goods_pay_type']);
//                    if (in_array($default_pay_type, $apple_pay))
//                    {
//                        array_unshift($apple_pay, $default_pay_type);
//                    }
//                    $array['pay_type_data'] = implode(',', array_unique($apple_pay));
                    $array['coin_pay_type_data'] = $AppVersion['coin_pay_type'];

                    if (Util::CheckAppVersion('2.9.7') === '大')
                    {
                        unset($array['pay_type_data'], $array['coin_pay_type_data'], $array['jd_pay_des'], $array['is_open_ad']);
                        $array['logo_type'] = 3;
                    }
                    // 2.10.4版本开始恢复成默认的不带文字的图标
                    if (Util::CheckAppVersion('2.10.4') !== '小')
                    {
                        $array['logo_type'] = 3;
                    }
                    if (Util::CheckAppVersion('2.9.11') !== '小')
                    {
                        $array['pay_type_data'] = '4,9';
                    }
                    $array['ai_tip_info'] = [
                        'color' => '#E1E3E5',
                        'content' => '内容由AI模型生成 请仔细甄别 理性看待'
                    ];
                    break;
                case 'android':
                    /**
                     * 判断当前app版本是否需要强制更新,指定更新开启且当前版本包含在内
                     */
                    $AppVersionCodeIds = empty($AppVersion['version_force_data']) ? [] : json_decode($AppVersion['version_force_data'], true);
                    if ($AppVersion['version_force'] == 1 && in_array($version_code, $AppVersionCodeIds))
                    {
                        $array['force'] = 1;
                    }
                    /**
                     * 仅针对安卓1.9.0版本开启热更新
                     */
                    if (strcasecmp($headers['app-type'], 'android') == 0 && strcasecmp($headers['version'], '1.9.0') == 0)
                    {
                        $array['is_hot_update'] = 1;
                    }
                    /**
                     * 仅针对安卓开app内更新更新,返回渠道包
                     */
                    if (strcasecmp('V' . $headers['version'], $AppVersion['version_name']) == 0)
                    {
                        //若app内更开启,返回app渠道包链接
                        if ($AppVersion['app_update'] == 1)
                        {
                            //获取渠道包
                            $channel_link = $AppChannelModel->getChannel($version_code, $channel);
                            $array['channel_link'] = Env::get('host.photo') . $channel_link['channel_link'];
                        }
                    }
                    /**
                     * 安卓审核模式
                     */
                    if (Util::IsHuaweiAndOppo())
                    {   // 审核模式只针对华为,OPPO
                        $array['is_android_check'] = $AppVersion['android_audit_mode_swtich'] ? 1 : 0;
                    } else
                    {
                        $array['is_android_check'] = 0;
                    }
                    if (Util::IsHuaweiAndOppo() && !Util::huaweiIsShowAll())
                    {
                        $array['is_android_show_bazi'] = 0;
                    } else
                    {
                        $array['is_android_show_bazi'] = isset($appConfig['is_android_show_bazi']) ? (int)$appConfig['is_android_show_bazi'] : 0;
                    }

                    $extend = json_decode($AppVersion['extend'], true);
                    // 根据 渠道 判断更新提示
                    if (in_array($channel, ['xiaomi', 'OPPO', 'VIVO', 'huawei', 'honor', 'tecent'], true) && isset($extend['android']['channel_force'][$channel]) && $extend['android']['channel_force'][$channel]['code'])
                    {
                        $channelVersionData = (new AppVersion())->getVersionInfo('android', $extend['android']['channel_force'][$channel]['code']);
                        if ($channelVersionData)
                        {
                            $array['version'] = $channelVersionData['version'];
                            $array['version_name'] = $channelVersionData['version_name'];
                            $array['update_content'] = $channelVersionData['update_content'];
                            $array['is_astro_data_from_local'] = $channelVersionData['is_astro_data_from_local'];
                            $array['is_open_ad'] = $channelVersionData['is_open_ad'];
                            $array['force'] = $extend['android']['channel_force'][$channel]['force'];
                        }
                    }
                    $array['ai_tip_info'] = [
                        'color' => '#C5C6C9',
                        'content' => '内容由AI生成 请仔细甄别 禁止利用功能从事违法活动'
                    ];
                    break;
            }
            $array['silent_mode'] = (int)$appConfig['silent_mode'];
            //是否开启数据采集sdk的上传功能
            $array['is_open_collect'] = (int)$appConfig['is_open_collect'];
            // APP 是否合规显示
            $array['hg'] = Util::AppIsPassShowV1() ? 1 : 0;
            return show(config('code.success'), '加载成功', $array);
        }
        return show(config('code.error'), 'app更新信息获取失败');

    }
}
